<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        
        console.log(111);
        setTimeout(() => {
            console.log(555);
        }, 1000);
        console.log(222);

        let p = new Promise((resolve)=>{
            console.log(444);
        })

        console.log(333);

        // js 任务 同步 和异步
        // 异步任务：1.宏任务 2.微任务
        // 微任务 ： 解决js的精度问题，减少js的颗粒度
        // 宏任务 ： 【1】 【2】 【3】 【4】 【5】 依次排队执行
        //                        |             【6】

        // 宏任务 ： 定时器、主代码块(script：用于执行同步代码)、ajax、资源的加载
        // 微任务 ： promise对象里的then、MutationObserver ： 用于观察节点变化
        // process.nextTick()

        // 先执行宏任务, 每一个宏任务后边会跟随一个微任务队列
        // 【...[...]】 【...[...]】 【...[]】

        // 【script : 同步代码[检测宏任务后的微任务队列 then]】 【setTimeout[空]】。。。
        // 【1,2,3,[then 4]】   【setTimeout ： 5[空]】


    </script>
</body>
</html>